home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PRUS101 / FDIRBOX.DOK < prev    next >
Text File  |  1994-12-18  |  11KB  |  231 lines

  1.  
  2.  
  3.                                                       Paul Schubert
  4.                                                       Rottweiler Str. 8
  5.                                                 60327 Frankfurt / M
  6.                                                       Tel.: 069 / 231145
  7.  
  8.                               Fido 2:244/1181.18
  9.  
  10.  
  11.        Beschreibung des Moduls FDIRBOX
  12.        ───────────────────────────────
  13.  
  14.     Frankfurt, 18.12.94
  15.  
  16.  
  17.   Diese DOC war nicht für FDIRBOX gedacht sondern für eine funktionsgleiche
  18. UNIT, die mit CRT arbeitet - ich hoffe, es gibt keine Diskrepanzen.
  19.  
  20.   Bei der UNIT DIRBOX handelt es sich um eine Fileselektorbox.
  21.   DIRBOX dürfte auch in Grafik Videomodi einsetzbar sein, ich garantiere
  22. aber nicht dafür, daß dieser Versuch brauchbare Ergebnisse zeitigt. In
  23. jedem Fall muß das Hauptprogramm USES CRT enthalten und vor Aufruf von
  24. SELECTFILE ein DIRECTVIDEO := FALSE;
  25.   Das Sichern und Restaurieren des Bildschirms funktioniert in den Grafik
  26. Videomodi auf keinen Fall.
  27.  
  28.  
  29.   DIRBOX wird wie folgt benutzt :
  30.  
  31. USES  DIRBOX;
  32.  
  33. VAR   Filename : STRING;
  34.  
  35. Filename := SELECTFILE(Pfad,Filespezifikation);
  36. z.B. : Filename := SELECTFILE('C:\TP','*.*');
  37. IF Filename = '' THEN { kein Filename selektiert ( <Esc> ) };
  38.  
  39.   SELECTFILE benutzt das im Hauptprogramm eingestellte WINDOW, der alte
  40. Bildschirminhalt wird von SELECTFILE gesichert und und nach getaner Arbeit
  41. wiederhergestellt.
  42.   Es ist natürlich nicht möglich, daß in einem beliebig kleinen Fenster
  43. eine Auswahlliste dargestellt wird, deshalb vergrößert SELECTFILE das
  44. aktuelle WINDOW, wenn dies nötig ist auf das minimal nötige Maß.
  45.  
  46.  
  47.   Die Bedienung der File Selektorbox ist einfach :
  48.   Mit den Cursortasten oder der Maus wird ein Filename, Directory oder
  49. Laufwerksbezeichner ausgewählt; die Steuertasten <Bild auf>, <Bild ab>,
  50. <Pos 1> und <Ende> haben die übliche Funktion.
  51.   Durch Eingabe von Buchstaben kann nach einem Dateinamen gesucht werden;
  52. die Leertaste, Backspace oder eine Cursortaste / Mausbewegung löschen den
  53. Suchbegriff. Der Suchbegriff wird unten im Rahmen angezeigt.
  54.   <Ret> oder die linke Maustaste haben folgende Funktion :
  55.   Ist ein Filename ausgewählt, wird dieser ans Hauptprogramm übergeben und
  56. die Fileselektorbox verlassen.
  57.   Ist ein Unterverzeichnis ausgewählt, schaltet DIRBOX auf dies Verzeichnis
  58. um.
  59.   Ist ein Laufwerksbezeichner ausgewählt, versucht DIRBOX, auf das Wurzel-
  60. verzeichnis des Laufwerks umzuschalten. Ist dies nicht möglich ( z.B. keine
  61. Diskette eingelegt ), ertönt ein Pieps und das aktuelle Verzeichnis bleibt
  62. erhalten.
  63.   <Esc> oder die rechte Maustaste beenden die Selektorbox ohne einen
  64. Dateinamen auszuwählen; an das Hauptprogramm wird ein leerer String über-
  65. geben.
  66.   Die in EXITKEYS definierten Tasten führen zum Verlassen der Auswahlbox.
  67. In diesem Fall enthält EXITKEY die Position des Tastencodes im Array
  68. EXITKEYS.
  69.   Mit der Taste <Tab> kann die Anzeigeart umgeschaltet werden; folgende
  70. Anzeigearten sind möglich :
  71.  1 - Nur Dateiname ( Voreinstellung )
  72.  2 - Dateiname und Größe
  73.  3 - Dateiname, Größe, Datum / Uhrzeit
  74.  4 - Dateiname, Attribute, Größe, Datum / Uhrzeit
  75.  
  76.   Mit der Leertaste können mehrere Dateien markiert werden. Die Leertaste
  77. schaltet die Marke für die Datei um, auf der der Cursor steht.
  78.   <Ctrl-T> markiert alle Dateien
  79.   <Ctrl-U> löscht alle Marken
  80.   Vor Beenden der Prozedur SELECTFILE oder beim Laufwerks / Verzeichnis-
  81. wechsel werden alle so markierten Filenamen einzeln der Prozedurvariablen
  82. PRINTNAME übergeben. Es wird der Filename einschließlich des kompletten
  83. Pfads auf PRINTNAME ausgegeben.
  84.   Das Hauptprogramm kann PRINTNAME auf eine eigene Prozedur umleiten, z.B. um
  85. eine Dateiliste in ein File zu schreiben. Ohne Definition einer eigenen
  86. Prozedur PRINTNAME können die Marken nur als Lesezeichen benutzt werden.
  87.   Die Ausgabe der markierten Namen erfolgt unabhängig davon, ob SELECTFILE
  88. mit <Ret> oder <Esc> beendet wird.
  89.   In DIRBOX.PAS ist PRINTNAME wie folgt deklariert :
  90. VAR   PRINTNAME : PROCEDURE(S:STRING);
  91.   und auf eine leere Prozedur gelegt. Benutzt werden kann PRINTNAME wie folgt:
  92.  
  93. VAR   F  : TEXT;
  94.  
  95. {$F+}PROCEDURE LISTE_AUSGEBEN(NAME:STRING);{$F-}
  96. BEGIN
  97.   WRITELN(F,NAME);
  98. { SCHREIBT EINEN AUSGEWÄHLTEN FILENAMEN EINSCHLIEßLICH DES VOLLSTÄNDIGEN
  99.   PFADS IN DATEI 'LISTE.TXT' }
  100. END; { LISTE_AUSGEBEN }
  101.  
  102. BEGIN
  103.   PRINTNAME := LISTE_AUSGEBEN;
  104.   ASSIGN(F,'LISTE.TXT');
  105.   REWRITE(F);
  106.   ...
  107.   CLOSE(F);
  108. END.
  109.  
  110.  
  111.   DIRBOX stellt im Wurzelverzeichnis jedes Laufwerks die Liste der logischen
  112. Laufwerke zur Auswahl, auf die momentan zugegriffen werden kann. D.h. auch
  113. Laufwerke, die mit ASSIGN und SUBST 'erzeugt' wurden, aber keine Laufwerke,
  114. für die nur ein Treiber vorhanden ist (z.B. nicht aktive Netzwerk Laufwerke),
  115. jedoch auch Disketten- und Wechselplattenlaufwerke, unabhängig davon, ob eine
  116. Diskette bzw. ein Medium eingelegt ist oder nicht.
  117.  
  118.   Wurde ein Dateiname ausgewählt, merkt sich DIRBOX ihn und positioniert
  119. beim nächsten Aufruf von SELECTFILE den Cursor auf diesen Namen oder, wenn
  120. er nicht gefunden wird, auf den nächstniedrigeren in der alphabetischen
  121. Sortierfolge.
  122.   Soll dies unterbunden werden, kann vor Aufruf von SELECTFILE die Variable
  123. SUCHENACH auf '' gesetzt werden.
  124.   Sie können auch vor dem ersten Aufruf von SELECTFILE der Variablen
  125. SUCHENACH einen Wert zuweisen, um den Cursor in der Auswahlliste vorab zu
  126. positionieren.
  127.  
  128.   In der Anzeige werden Laufwerke durch eine Raute und Unterverzeichnisse
  129. durch ein Rechteck gekennzeichnet. Diese Kennzeichner können vom Haupt-
  130. programm verändert werden; beachten Sie, daß diese Marken in die Sortier-
  131. reihenfolge mit eingehen !
  132. CONST DIRMARK    : CHAR = #254; ist die Marke für Unterverzeichnisse
  133.       DRIVEMARK  : CHAR = #4;   ist die Marke für Laufwerke
  134.   DIRMARK und DRIVEMARK dürfen auf keinen Fall den selben Wert haben !
  135.   Im Zweifelsfall können Sie
  136. DIRMARK   := #255; und
  137. DRIVEMARK := ' ';
  138.   einstellen; dann werden beide als Leerzeichen dargestellt, aber nach wie
  139. vor die Laufwerke vorne und die Unterverzeichnisse hinten einsortiert.
  140. Oder aber
  141. DIRMARK   := ' '; und
  142. DRIVEMARK := #0;
  143.   wieder werden beide als Leerzeichen dargestellt, die Sortierfolge ist aber
  144. zuerst die Laufwerke, dann Unterverzeichnisse und zuletzt Files.
  145.  
  146.   FDIRBOX benutzt die UNIT GETDRVS, um die vorhandenen logischen Laufwerke
  147. festzustellen.
  148.  
  149.   Wer DIRBOX in Programmen zusammen mit TPCRT benutzen will, muß den Compiler-
  150. schalter {$DEFINE USETPCRT} im Quellfile aktivieren.
  151.   Soll DIRBOX keine Maus benutzen, muß der Compilerschalter {$DEFINE USEMOUSE}
  152. deaktiviert werden.
  153.  
  154.   Ein weiterer Compilerschalter {$DEFINE SPDISP} ermöglicht es, beim Compilieren
  155. festzulegen, in welcher Form die Anzeige erfolgt : Ist SPDISP definiert,
  156. werden die Filenamen in sortierter Folge untereinander angezeigt, d.h. in der
  157. linken Spalte von der ersten bis zur letzten Zeile und der nächste Name in
  158. der ersten Zeile der 2. Spalte, sonst in sortierter Folge nebeneinander, d.h.
  159. zuerst alle Spalten in der ersten Zeile, dann jeweils die nächste Zeile.
  160.  
  161.   DIRBOX enthält noch weitere Besonderheiten :
  162.   Es können bis zu 5 Strings angegeben werden, um bestimmte Dateinamen von
  163. der Anzeige auszuschließen und bis zu 5 Strings, um nur nach bestimmten
  164. Dateinamen zu suchen :
  165. CONST EXCLUDE  : ARRAY[1..ANZINCLUDE] OF STRING[12] = ('','','','','');
  166.       INCLUDE  : ARRAY[1..ANZINCLUDE] OF STRING[12] = ('','','','','');
  167.   Sie können z.B.
  168. INCLUDE[1] := '.PAS';
  169. INCLUDE[2] := '.TPU';
  170.   angeben, um nur Files mit der Erweiterung .PAS und .TPU angezeigt zu erhalten
  171. oder
  172. EXCLUDE[1] := '.BAK';
  173.   um die Files mit Erweiterung .BAK von der Anzeige auszuschließen.
  174.   In INCLUDE[] und EXCLUDE[] dürfen keine '*' und '?' angegeben werden, wie
  175. es sonst bei Filespezifikationen üblich ist. Der gleichzeitige Gebrauch von
  176. INCLUDE und EXCLUDE wird vermutlich keine sinnvollen Ergebnisse liefern.
  177.  
  178.   Ist der Filenamen Parameter bei Aufruf von SELECTFILE '*.*', werden die
  179. Inhalte von INCLUDE[] in der Kopfzeile der Auswahlbox angezeigt.
  180.  
  181.   Wenn Sie größere Listen für INCLUDE und / oder EXCLUDE brauchen, können
  182. Sie die Konstante CONST ANZINCLUDE = 5; im Quellcode verändern.
  183.  
  184.  
  185.   Um es zu ermöglichen, die Auswahlliste mit anderen Tasten als <Ret> und
  186. <Esc> zu verlassen, können im Array EXITKEYS weitere Tasten definiert werden.
  187. Damit die Auswahlbox für verschiedene Funktionen benutzt werden kann, z.B.
  188. <Ret> = Anzeigen, <F1> = Editieren, <F2> = Löschen, <F3> = Umbenennen,
  189. liefert SELECTFILE auch beim Verlassen mittels eines EXITKEYS den ausge-
  190. wählten Dateinamen.
  191.   Im Hauptprogramm kann anhand der Variablen EXITKEY festgestellt werden,
  192. mit welcher Taste SELECTFILE beendet wurde. EXITKEY gibt den Index im
  193. Array EXITKEYS an, beginnend mit 1, d.h.
  194. EXITKEY = 0 -> SELECTFILE wurde mit <Ret> oder <Esc> verlassen
  195. EXITKEY = 1 -> SELECTFILE wurde mit EXITKEYS[1] verlassen usw.
  196.   In EXITKEYS werden 16 Bit Werte eingetragen, die als höherwertiges Byte
  197. den Scancode und als niederwertiges Byte den ASCII Wert einer Taste enthalten,
  198. z.B. für <F1> : EXITKEYS[1] := 59 SHL 8; bzw. EXITKEYS[1] := $3B00;
  199.  
  200.  
  201.   Die Bildschirmattribute ( Farben ) sind in den folgenden 6 typisierten
  202. Konstanten abgelegt, die vom Hauptprogramm verändert werden können :
  203. CONST TANONSEL  : BYTE = $0F; { TEXTATTRIBUT NICHT SELEKTIERT }
  204.       TASELECT  : BYTE = $70; { TEXTATTRIBUT SELEKTIERT }
  205.       TARAND    : BYTE = $1E; { TEXTATTRIBUT RAHMEN UM DIE AUSWAHLLISTE }
  206.       TATITEL   : BYTE = $5E; { TEXTATTRIBUT DES TITELS (PFAD / ANZAHL FILES) }
  207.       TATAGED   : BYTE = $0C; { markierte Namen }
  208.       TATAGEDS  : BYTE = $74; { markierte Namen, auf denen der Cursor steht }
  209.  
  210.  
  211.   Die oben beschriebenen 4 Anzeigemodi können vor dem ersten bzw. vor jedem
  212. Aufruf von SELECTFILE explizit mittels der Variablen DIRDISPLAYMODE einge-
  213. stellt werden :
  214.  DIRDISPLAYMODE := 1; Nur Dateiname      -> Voreinstellung
  215.  DIRDISPLAYMODE := 2; Dateiname und Größe
  216.  DIRDISPLAYMODE := 3; Dateiname, Größe, Datum / Uhrzeit
  217.  DIRDISPLAYMODE := 4; Dateiname, Attribute, Größe, Datum / Uhrzeit
  218.  
  219.   Als Voreinstellung können sowohl Unterverzeichnisse als auch andere logische
  220. Laufwerke angewählt werden.
  221.   Ist dies nicht erwünscht, kann mit
  222.   DRIVESALLOWED := FALSE; der Wechsel auf ein anderes Laufwerk und mit
  223.   DIRSALLOWED := FALSE; der Verzeichniswechsel unterbunden werden.
  224.  
  225.  
  226.   DIRBOX ist bei weitem noch nicht zu ende entwickelt; im laufe der Zeit
  227. werde ich gewiß noch einige Verbesserungen an dieser UNIT vornehmen.
  228.  
  229.  
  230.  
  231.